iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Python

python零之旅系列 第 19

DAY19. Python GUI - 座標隨機生成器

  • 分享至 

  • xImage
  •  

前幾期我們完成了基本視窗建立,
並學習了如何在視窗上建立文字標籤及視窗,
今天我們就來將前幾期學習到的知識,
透過一個小程式進行練習。

我們這次的實作目標是,
給兩個輸入框讓使用者輸入x、y座標範圍,
按下生成後可以隨機生成出範圍內的座標,
且可讓使用者複製結果。
那就讓我們開始吧!


1.安裝模組

我們這次的實作,需要用到 copy() 方法,
因此我們需要安裝一個 pyperclip模組,
Pyperclip 是一個跨平台的 Python 模組,
用於複製和貼上剪貼簿功能

我們打開cmd,並找到python中的Scripts路徑,
並在其中打上「pip\import pyperclip」,
就能擴充此模組到python中囉!
https://ithelp.ithome.com.tw/upload/images/20241003/20169195R2vkzutV02.png

2.設定擴充功能

這次的實作中,
我們需要用到隨機生成以及pyperclip模組,
在程式碼的開頭,
我們需要先打上擴充的程式碼,
後面才能順利運行。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195Pb5Jx6y8hU.png

3.建立基本視窗

接著,我們可以按照之前學習的去建立視窗,
並修改它的標題和顏色。
在這裡,我們可以新學習兩項功能:

(1)設定視窗開始位置
我們可以再設立視窗大小的後面加上x、y座標,
讓程式運行時,
視窗會以左上角的頂點為設立的x、y座標,
以當點為開啟視窗的位置。

(2)設立字型及大小
我們可以透過config()方法,
在括號內輸入想要的字型及字體大小。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195evUpruq62f.png

運行後會出現下圖的樣子。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195PRpNrS97L0.png

4.插入標籤、輸入框及按鈕元件

在x、y座標隨機生成器中,
我們需要設計最小範圍及最大範圍的輸入框,
因此,我們加入兩項標籤及兩個輸入框,
分別作為最大及最小範圍的使用。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195upmhPcdtg6.png

運行後的視窗如下圖。
https://ithelp.ithome.com.tw/upload/images/20241003/201691959y1xqDWRWh.png

在小程式中,
我們還需要插入兩個按鈕,
一個是隨機生成座標的按鈕,
一個是複製座標的按鈕。

我們可以在pack()方法中,
設定按鈕出現的位置。
使用side = (top, bottom, left, right),
這裡我們就設定按鈕為一左一右。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195aRNGbwY15i.png

運行後視窗會長這個樣子,
一個按鈕便出現在最左邊,
另一個則在最右邊。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195abJJxYc4Mn.png

5.設立隨機生成座標

接下來的一步,
我們可以開始設立x、y座標的隨機生成。
首先,我們先設立x、y座標的兩個標籤,
並設立一個方法gen_xy()。

在這項方法中,
我們先使用get()方法取得使用者輸入的最大最小值,
由於這項方法所取得的結果是以字串為預設資料型態,
所以我們要將資料型態改為整數
以便後續使用。

接下來,
我們要使用到random中的 randint() 方法,
它的用途是隨機生成一個數字。
最後我們再設立標籤的文字屬性為我們剛才隨機生成的數字。
要注意的是,
因為標籤的文字為字串型態,
而隨機生成數字的資料型態為整數
因此我們要將數字的資料型態改為字串
後面的程式碼才能正常運行喔!
https://ithelp.ithome.com.tw/upload/images/20241003/20169195lv1b01NfmP.png

別忘了在按鈕的地方插入gen_xy()方法,
這樣我們在按下按鈕時,
才會執行上述動作。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195hxKyJAMmdu.png

我們按下執行來看看,
當我們輸入最大最小範圍並按下按鈕後,
下方就會隨機生成範圍內的數字了!
https://ithelp.ithome.com.tw/upload/images/20241003/20169195MvNSdPsjXB.png

6.複製內容

最後,我們設立一項copy()方法,
我們需要引用pyperclip模組中的copy,
並使用 cget() 方法,去抓取命令內容,
在這裡我們抓取的是標籤文字,
並將這些內容設立成我們要複製的內容。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195nAUw6VJtzs.png

這裡也要在按鈕的地方插入copy()方法,
這樣我們在按下按鈕時,
才會執行上述動作。
https://ithelp.ithome.com.tw/upload/images/20241003/20169195rTQLMD9Wxr.png

運行程式碼後,
當我們按下copy按鈕時,
x、y座標便被複製下來,
可以在其他地方貼上。
https://ithelp.ithome.com.tw/upload/images/20241003/201691955yjfA6ftKl.png


以上就是今天這期的實作,
其實沒有想像中的困難,
只要掌握了程式的邏輯,
就可以輕鬆寫出程式碼了!

參考資料:
https://www.youtube.com/watch?v=bJv4W33ta-Y&list=PLSCgthA1Anie_vHuCOt3hCXN6HIl8Ph8u&index=5
https://blog.csdn.net/boluofyFly/article/details/111216877
https://ithelp.ithome.com.tw/articles/10278264?sc=hot


上一篇
DAY18. Python GUI - 建立標籤及對話框
下一篇
DAY20. Python GUI - Tkinter佈局(Grid、Pack、Place)
系列文
python零之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言